package com.fortune.dao;

import com.fortune.dto.in.mStoreInit.MStoreInitAddDto;
import com.fortune.dto.in.mStoreInit.MStoreInitEditDto;
import com.fortune.dto.in.mStoreInit.MStoreInitListDto;
import com.fortune.dto.in.mStoreInit.MStoreInitProduceDto;
import com.fortune.vo.mStoreInit.MInitInfo;
import com.fortune.vo.mStoreInit.MinitDetails;
import com.fortune.vo.productStockDetailInfo.ProductStockDetailInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface MStoreInitDao {
    /**
     * 查询初始化单列表
     * @param mStoreInitListDto
     * @return
     */
    List<MInitInfo> queryMInitInfoList(@Param("companyId") String companyId,@Param("mStoreInitListDto") MStoreInitListDto mStoreInitListDto);

    /**
     * 查询初始化单列表个数
     * @return
     */
    int queryMInitInfoListCount(@Param("companyId") String companyId);

    /**
     * 查询初始化单数据是否存在
     * @param companyId
     * @param num
     * @param storeId
     * @return
     */
    int queryMInitInfoIsExist(@Param("companyId") String companyId, @Param("num") String num, @Param("storeId") String storeId);

    /**
     * 添加初始化单
     * @param userId
     * @param id
     * @param companyId
     * @param addDto
     * @return
     */
    int addMInitInfo(@Param("userId") String userId,@Param("id") String id, @Param("companyId") String companyId, @Param("addDto") MStoreInitAddDto addDto);

    /**
     * 添加初始化单详情
     * @param companyId
     * @param id
     * @param list
     * @return
     */
    int addInitDetailInfo(@Param("companyId") String companyId,@Param("id") String id,@Param("list") List<MStoreInitProduceDto> list);

    /**
     * 编辑初始化单
     * @param companyId
     * @param editDto
     * @return
     */
    int editMInitInfo(@Param("companyId") String companyId,@Param("editDto") MStoreInitEditDto editDto);

    /**
     * 删除初始化单详情数据
     * @param companyId
     * @param id
     * @return
     */
    int deleteMInitDetailInfo(@Param("companyId") String companyId,@Param("id") String id);

    /**
     * 编辑初始化单详情
     * @param companyId
     * @param list
     * @param id
     * @return
     */
    int editInitDetailInfo(@Param("companyId") String companyId,@Param("list") List<MStoreInitProduceDto> list,@Param("id") String id);

    /**
     * 删除初始化单
     * @param companyId
     * @param id
     * @return
     */
    int deleteMInitInfo(@Param("companyId") String companyId,@Param("id") String id);

    /**
     * 更新初始化状态
     * @param companyId
     * @param id
     * @return
     */
    int updateStoreInit(@Param("userId") String userId, @Param("companyId") String companyId,@Param("id") String id);

    /**
     * 从初始化查询厂商商品库存明细账数据
     * @param companyId
     * @param id
     * @return
     */
    List<ProductStockDetailInfo> queryProductStock(@Param("companyId") String companyId,@Param("id") String id);

    /**
     * 获取初始化单详情
     * @param companyId
     * @param id
     * @return
     */
    MinitDetails queryStoreInitDetails(@Param("companyId") String companyId,@Param("id") String id);

    /**
     * 编辑时查询初始化单数据是否存在
     * @param companyId
     * @param num
     * @param storeId
     * @return
     */
    int queryEditMInitInfoIsExist(@Param("companyId") String companyId, @Param("num") String num, @Param("storeId") String storeId);
}
